home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / mpegint2.lha / MPEGIntuition.e < prev    next >
Text File  |  1995-05-18  |  35KB  |  951 lines

  1. /******************(E)(D)evelopment(S)ystem***************
  2. ** FileName:   mpegplayer_2.e
  3. ** Author:     Sauron
  4. ** Company:    GUILT
  5. ** Date:       05-20-95     Time:   18:24:20
  6. ** $VER:       2.12b
  7. ***************************************©Sauron***********/
  8. /*********[Revision History]****[Last Update: 05-20-95]**/
  9. /*
  10. ** Version:   2.12c
  11. ** Comment:   N/A
  12. **
  13. **
  14. **
  15. **
  16. **   This Amiga E source is only an example of E programing.
  17. **   You can use part of it in your own programe (Place me on your thx. 
  18. **   list :) but you CAN'T create any other Intuition by changing names
  19. **   only !!!!
  20. **
  21. **
  22. **
  23. */
  24.  
  25. OPT OSVERSION=37
  26.  
  27. MODULE 'gadtools', 'libraries/gadtools', 'intuition/intuition','intuition/gadgetclass',
  28.        'intuition/screens', 'graphics/text',    'ReqTools','commodities','libraries/commodities',
  29.        'exec/types','exec/ports','exec/memory','dos/dos','devices/inputevent',
  30.        'libraries/ReqTools','exec/lists', 'exec/nodes', 'utility/tagitem',
  31.         'workbench/startup','workbench/workbench','icon','keymap'
  32.  
  33. /*-- Function return values. --*/
  34. ENUM NONE,NOCONTEXT, NOGADGET, NOWB, NOVISUAL, OPENGT, NOWINDOW,NO_MP,
  35.      NO_ICONLIB,NO_GADTOOLS,NO_REQTOOLS,NO_ICON
  36.  
  37. /*-- Gadget IDs. --*/
  38. ENUM DELETEBUTTON_ID, STRING_ID, LISTVIEW_ID,
  39.      INFOBUTTON_ID, PLAYBUTTON_ID ,LOADBUTTON_ID
  40.  
  41. RAISE "MEM" IF New()=NIL,
  42.       "MEM" IF String()=NIL
  43.  
  44. CONST FILEREQ=0
  45.  
  46. /*-- Standard SrcGen stuff. --*/
  47. DEF win=NIL:PTR TO window,dither[20]:STRING,
  48.     scr=NIL:PTR TO screen,prr,x,y,
  49.     glist=NIL,dir[100]:STRING,buf[50]:STRING,
  50.     visual=NIL,count,gattext[100]:STRING,
  51.     infos:PTR TO gadget,chippointer,prio,
  52.     messageClass,rodzajDit,plik[100]:STRING,class,
  53.     offx, offy, tattr,mainfile[200]:STRING,mppath[100]:STRING,
  54.     appath[100]:STRING,noap=FALSE,shit=FALSE,
  55.     robot[200]:STRING,req:PTR TO rtfilerequester,myreq:requester
  56.  
  57. /*-- Listview and supporting gadgets. --*/
  58. DEF list=NIL:PTR TO mlh,            /* Exec list holds listview items         */
  59.     listView=NIL:PTR TO gadget,     /* Listview gadget                        */
  60.     infoButton=NIL:PTR TO gadget,
  61.     loadButton=NIL:PTR TO gadget,
  62.     playButton=NIL:PTR TO gadget,
  63.     textX=NIL:PTR TO gadget,
  64.     textY=NIL:PTR TO gadget,
  65.     textSize=NIL:PTR TO gadget,
  66.     textKB=NIL:PTR TO gadget,
  67.     textComp=NIL:PTR TO gadget,
  68.     textFrames=NIL:PTR TO gadget,
  69.     textTime=NIL:PTR TO gadget,
  70.     textKlata=NIL:PTR TO gadget,
  71.     checkRAM=NIL:PTR TO gadget,
  72.     checkLoop=NIL:PTR TO gadget,
  73.     checkNOP=NIL:PTR TO gadget,
  74.     checkNOB=NIL:PTR TO gadget,
  75.     saveButton=NIL:PTR TO gadget, /* Button gadget TO delete an item        */
  76.     stringGadget=NIL:PTR TO gadget, /* String gadget, value added to listview */
  77.     stringGadgetValue:PTR TO CHAR,   /* Pointer to string gadget buffer        */
  78.     check=FALSE,ch1=TRUE,ch2=TRUE,ch3=TRUE,ch4=TRUE,lue,player=1
  79.  
  80. PROC initList(l:PTR TO mlh)
  81. /*-- Initialize an exec list. --*/
  82.   l.head:=l+4
  83.   l.tail:=NIL
  84.   l.tailpred:=l
  85. ENDPROC
  86.  
  87. CHAR '$VER: MPEGInt. v2.12c by SAURON (c) 1995',0
  88.  
  89. PROC setupScreen()
  90. /*-- Open libraries and get screen info. --*/
  91.   IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN OPENGT
  92.   IF (scr:=LockPubScreen('Workbench'))=NIL THEN RETURN NOWB
  93.   IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN NOVISUAL
  94.   offy:=scr.wbortop+Int(scr.rastport+58)-10
  95.   tattr:=['topaz.font',8,0,0]:textattr
  96. ENDPROC  NONE
  97.  
  98. PROC closeScreen()
  99. /*-- Free resources, close screen and libraries. --*/
  100.   IF glist THEN FreeGadgets(glist)
  101.   IF visual THEN FreeVisualInfo(visual)
  102.   IF scr THEN UnlockPubScreen(NIL,scr)
  103.   IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  104. ENDPROC
  105.  
  106. PROC createGadgets()
  107. /*-- Initialize gadget structures and create 'em. --*/
  108.   DEF g, stringInfo:PTR TO stringinfo
  109.   /*-- Init exec list to hold listview items.  Starts out empty. --*/
  110.   list:=New(SIZEOF mlh)
  111.   initList(list)
  112.   IF (g:=CreateContext({glist}))=NIL THEN RETURN NOCONTEXT
  113.   IF (g:=listView:=CreateGadgetA(LISTVIEW_KIND,g,
  114.     [offx+179,offy+26,130,104,'Dither type',tattr,LISTVIEW_ID,0,visual,0]:newgadget,
  115.     [GTLV_LABELS,list,
  116.      GTLV_SHOWSELECTED,NIL,
  117.      TAG_DONE]))=NIL THEN RETURN NOGADGET
  118.   IF (g:=textX:=CreateGadgetA(TEXT_KIND,g,
  119.     [offx+17,offy+31,32,12,'X',tattr,1,2,visual,0]:newgadget,
  120.     [GTTX_TEXT,'000',
  121.      GTTX_BORDER,1,
  122.      NIL]))=NIL THEN RETURN NOGADGET
  123.   IF (g:=textY:=CreateGadgetA(TEXT_KIND,g,
  124.     [offx+131,offy+31,32,12,'SIZE Y',tattr,2,1,visual,0]:newgadget,
  125.     [GTTX_TEXT,'000',
  126.      GTTX_BORDER,1,
  127.      NIL]))=NIL THEN RETURN NOGADGET
  128.   IF (g:=textTime:=CreateGadgetA(TEXT_KIND,g,
  129.     [offx+59,offy+46,104,12,'Time',tattr,3,1,visual,0]:newgadget,
  130.     [GTTX_TEXT,'00000.000000',
  131.      GTTX_BORDER,1,
  132.      NIL]))=NIL THEN RETURN NOGADGET
  133.   IF (g:=textFrames:=CreateGadgetA(TEXT_KIND,g,
  134.     [offx+83,offy+61,80,12,'Frame/s',tattr,4,1,visual,0]:newgadget,
  135.     [GTTX_TEXT,'00.000000',
  136.      GTTX_BORDER,1,
  137.      NIL]))=NIL THEN RETURN NOGADGET
  138.   IF (g:=textSize:=CreateGadgetA(TEXT_KIND,g,
  139.     [offx+83,offy+77,80,12,'Frame/B',tattr,5,1,visual,0]:newgadget,
  140.     [GTTX_TEXT,'000.00000',
  141.      GTTX_BORDER,1,
  142.      NIL]))=NIL THEN RETURN NOGADGET
  143.   IF (g:=textComp:=CreateGadgetA(TEXT_KIND,g,
  144.     [offx+98,offy+92,65,12,'Compress.',tattr,6,1,visual,0]:newgadget,
  145.     [GTTX_TEXT,'00:00.0',
  146.      GTTX_BORDER,1,
  147.      NIL]))=NIL THEN RETURN NOGADGET
  148.   IF (g:=textKB:=CreateGadgetA(TEXT_KIND,g,
  149.     [offx+42,offy+108,41,12,'KB',tattr,7,1,visual,0]:newgadget,
  150.     [GTTX_TEXT,'000000000',
  151.      GTTX_BORDER,1,
  152.      NIL]))=NIL THEN RETURN NOGADGET
  153.   IF (g:=textKlata:=CreateGadgetA(TEXT_KIND,g,
  154.     [offx+122,offy+108,41,12,'Fr.',tattr,7,1,visual,0]:newgadget,
  155.     [GTTX_TEXT,'0000',
  156.      GTTX_BORDER,1,
  157.      NIL]))=NIL THEN RETURN NOGADGET
  158.   IF ch1=0
  159.    IF (g:=checkRAM:=CreateGadgetA(CHECKBOX_KIND,g,
  160.      [offx+134,offy+132,26,11,'RAM',tattr,8,1,visual,0]:newgadget,
  161.      [GTCB_CHECKED]))=NIL THEN RETURN NOGADGET
  162.   ELSE
  163.    IF (g:=checkRAM:=CreateGadgetA(CHECKBOX_KIND,g,
  164.      [offx+134,offy+132,26,11,'RAM',tattr,8,1,visual,0]:newgadget,
  165.      [NIL]))=NIL THEN RETURN NOGADGET
  166.   ENDIF
  167.   IF ch4=0
  168.    IF (g:=checkNOP:=CreateGadgetA(CHECKBOX_KIND,g,
  169.      [offx+167,offy+132,26,11,'NOP',tattr,9,2,visual,0]:newgadget,
  170.      [GTCB_CHECKED]))=NIL THEN RETURN NOGADGET
  171.   ELSE
  172.    IF (g:=checkNOP:=CreateGadgetA(CHECKBOX_KIND,g,
  173.      [offx+167,offy+132,26,11,'NOP',tattr,9,2,visual,0]:newgadget,
  174.      [NIL]))=NIL THEN RETURN NOGADGET
  175.   ENDIF
  176.   IF ch2=0
  177.    IF (g:=checkLoop:=CreateGadgetA(CHECKBOX_KIND,g,
  178.      [offx+134,offy+147,26,11,'LOOP',tattr,10,1,visual,0]:newgadget,
  179.      [GTCB_CHECKED]))=NIL THEN RETURN NOGADGET
  180.   ELSE
  181.    IF (g:=checkLoop:=CreateGadgetA(CHECKBOX_KIND,g,
  182.      [offx+134,offy+147,26,11,'LOOP',tattr,10,1,visual,0]:newgadget,
  183.      [NIL]))=NIL THEN RETURN NOGADGET
  184.   ENDIF
  185.   IF ch3=0
  186.    IF (g:=checkNOB:=CreateGadgetA(CHECKBOX_KIND,g,
  187.      [offx+167,offy+147,26,11,'NOB',tattr,11,2,visual,0]:newgadget,
  188.      [GTCB_CHECKED]))=NIL THEN RETURN NOGADGET
  189.   ELSE
  190.    IF (g:=checkNOB:=CreateGadgetA(CHECKBOX_KIND,g,
  191.      [offx+167,offy+147,26,11,'NOB',tattr,11,2,visual,0]:newgadget,
  192.      [NIL]))=NIL THEN RETURN NOGADGET
  193.   ENDIF
  194.   IF (g:=loadButton:=CreateGadgetA(BUTTON_KIND,g,
  195.     [offx+17,offy+178,20,14,'L',tattr,12,0,visual,0]:newgadget,
  196.     [NIL]))=NIL THEN RETURN NOGADGET
  197.   IF (g:=stringGadget:=CreateGadgetA(STRING_KIND,g,
  198.     [offx+38,offy+179,263,12,'File ',tattr,13,4,visual,0]:newgadget,
  199.     [GTST_STRING,gattext,
  200.      GTST_MAXCHARS,256,
  201.      NIL]))=NIL THEN RETURN NOGADGET
  202.      stringInfo:=stringGadget.specialinfo
  203.      stringGadgetValue:=stringInfo.buffer
  204.   IF (g:=playButton:=CreateGadgetA(BUTTON_KIND,g,
  205.     [offx+15,offy+131,66,29,'PLAY',tattr,14,16,visual,0]:newgadget,
  206.     [NIL]))=NIL THEN RETURN NOGADGET
  207.   IF (g:=infoButton:=CreateGadgetA(BUTTON_KIND,g,
  208.     [offx+244,offy+131,58,14,'About',tattr,15,16,visual,0]:newgadget,
  209.     [NIL]))=NIL THEN RETURN NOGADGET
  210.   IF (g:=saveButton:=CreateGadgetA(BUTTON_KIND,g,
  211.     [offx+244,offy+147,58,13,'SAVE',tattr,16,16,visual,0]:newgadget,
  212.     [NIL]))=NIL THEN RETURN NOGADGET
  213. ENDPROC  NONE
  214.  
  215. PROC openWindow()
  216.   IF createGadgets()<>NONE THEN RETURN NOGADGET
  217.   /*-- Note WA_IDCMP to get messages from the listview gadget: --*/
  218.   IF (win:=OpenWindowTagList(NIL,
  219.     [WA_LEFT,         x,
  220.      WA_TOP,          y,
  221.      WA_WIDTH,        offx+316,
  222.      WA_HEIGHT,       offy+200,
  223.      WA_MINWIDTH, 240, WA_MINHEIGHT,  11,
  224.      WA_IDCMP,        (IDCMP_REFRESHWINDOW OR IDCMP_CLOSEWINDOW OR IDCMP_GADGETUP OR
  225.                        IDCMP_MOUSEMOVE OR LISTVIEWIDCMP OR SCROLLERIDCMP
  226. OR IDCMP_NEWSIZE),
  227.      WA_FLAGS,        (WFLG_DRAGBAR OR WFLG_DEPTHGADGET OR WFLG_CLOSEGADGET OR
  228.                        WFLG_SMART_REFRESH OR WFLG_ACTIVATE/* OR WFLG_HASZOOM*/),
  229.      WA_TITLE,'Sauron MPEG Intuition V2.12c',
  230.      WA_CUSTOMSCREEN, scr,
  231.      WA_MINWIDTH,     67,
  232.      WA_MINHEIGHT,    21,
  233.      WA_MAXWIDTH,     $2C0,
  234.      WA_MAXHEIGHT,    277,
  235.      WA_AUTOADJUST,   1,
  236.      WA_GADGETS,      glist,
  237.      TAG_DONE]))=NIL THEN RETURN NOWINDOW
  238.   PrintIText(win.rport,
  239.     [1,0,0,50,14,tattr,'MPEG Info',NIL]:intuitext,offx,offy)
  240.   DrawBevelBoxA(win.rport,7+offx,165+offy,302,31,
  241.     [GT_VISUALINFO,visual,NIL])
  242.   DrawBevelBoxA(win.rport,7+offx,127+offy,302,37,
  243.     [GT_VISUALINFO,visual,NIL])
  244.   DrawBevelBoxA(win.rport,7+offx,26+offy,170,100,
  245.     [GT_VISUALINFO,visual,NIL])
  246.   Gt_RefreshWindow(win, NIL)
  247. ENDPROC NONE
  248.  
  249. PROC closeWindow()
  250.   IF win THEN CloseWindow(win)
  251. ENDPROC
  252.  
  253. PROC wait4message(win:PTR TO window)
  254.   DEF mes:PTR TO intuimessage, type
  255.   REPEAT
  256.     type:=0
  257.     IF mes:=Gt_GetIMsg(win.userport)
  258.       type:=mes.class
  259.       SELECT type
  260.         CASE IDCMP_NEWSIZE
  261.         CASE IDCMP_GADGETUP
  262.           /*-- Any old gadget will do.  The address is used --*/
  263.           /*-- to identify which one sent the message.      --*/
  264.           infos:=mes.iaddress
  265.           infos.gadgetid:=mes.code
  266.         SELECT infos
  267. /*         CASE stringGadget
  268.            StrCopy(gattext,stringGadgetValue)
  269.            RightStr(buf,gattext,porow())
  270.            Gt_SetGadgetAttrsA (stringGadget, win, NIL,
  271.                       [GTST_STRING,gattext,TAG_DONE])*/
  272.          CASE listView
  273.            rodzajDit:=mes.code
  274.          ENDSELECT
  275.           IF mes.code THEN check:=TRUE ELSE check:=FALSE
  276.          CASE IDCMP_REFRESHWINDOW
  277.           Gt_BeginRefresh(win)
  278.           Gt_EndRefresh(win,TRUE)
  279.           name()
  280.           type:=0
  281.       ENDSELECT
  282.       Gt_ReplyIMsg(mes)
  283.     ELSE
  284.       WaitPort(win.userport)
  285.     ENDIF
  286.   UNTIL type
  287. ENDPROC type
  288.  
  289. PROC addToList()
  290.   DEF newNode=NIL:PTR TO ln, node:PTR TO ln,
  291.       len, itemPosition=0
  292.   newNode:=New(SIZEOF ln)
  293.   len:=StrLen(lue)
  294.   newNode.name:=String(len)
  295.   StrCopy(newNode.name, lue, ALL)
  296. /*-- Detach the exec LIST from the listview gadget. --*/
  297.   Gt_SetGadgetAttrsA (listView, win, NIL, [GTLV_LABELS, -1, TAG_DONE])
  298. /*-- Decide where TO insert the new item.  Sorted on first character. --*/
  299.   node:=list.head
  300.   Insert(list, newNode, node.pred)
  301. /*  ENDIF*/
  302.   /*-- Reattach the exec list to the listview gadget. --*/
  303.   Gt_SetGadgetAttrsA (listView, win, NIL,
  304.                       [GTLV_LABELS, list,
  305.                        GTLV_TOP,    itemPosition,
  306.                        TAG_DONE])
  307. ENDPROC
  308.  
  309. PROC main() HANDLE
  310. DEF listItemPosition=0,waitpointer,mp_Task,pentla
  311. waitpointer:=[$0000, $0000,
  312.               $0400, $07C0,
  313.               $0000, $07C0,
  314.               $0100, $0380,
  315.               $0000, $07E0,
  316.               $07C0, $1FF8,
  317.               $1FF0, $3FEC,
  318.               $3FF8, $7FDE,
  319.               $3FF8, $7FBE,
  320.               $7FFC, $FF7F,
  321.               $7EFC, $FFFF,
  322.               $7FFC, $FFFF,
  323.               $3FF8, $7FFE,
  324.               $3FF8, $7FFE,
  325.               $1FF0, $3FFC,
  326.               $07C0, $1FF8,
  327.               $0000, $07E0,
  328.               $0000, $0000]:INT
  329.  
  330. IF chippointer:=AllocVec(72,MEMF_CHIP)
  331.  CopyMemQuick(waitpointer,chippointer,72)
  332. ENDIF
  333.   IF reqtoolsbase:=OpenLibrary('reqtools.library',37)
  334.    ikona()
  335.     IF FileLength(mppath)<=0
  336.       Raise(NO_MP)
  337.     ENDIF
  338.     pentla:=1
  339.    IF setupScreen()=NONE
  340.     IF openWindow()=NONE
  341.      lue:='AMP-hiresham'
  342.      addToList()
  343.      lue:='AMP-ham6'
  344.      addToList()
  345.      lue:='AMP-color'
  346.      addToList()
  347.      lue:='Opal15'
  348.      addToList()
  349.      lue:='Opal24'
  350.      addToList()
  351.      lue:='Village24'
  352.      addToList()
  353.      lue:='EGS24'
  354.      addToList()
  355.      lue:='Retina24'
  356.      addToList()
  357.      lue:='Mono'
  358.      addToList()
  359.      lue:='FS4'
  360.      addToList()
  361.      lue:='FS2 Fast'
  362.      addToList()
  363.      lue:='FS2'
  364.      addToList()
  365.      lue:='Ordered2'
  366.      addToList()
  367.      lue:='Ordered'
  368.      addToList()
  369.      lue:='Hybrid2'
  370.      addToList()
  371.      lue:='Hybrid'
  372.      addToList()
  373.      lue:='Threshold'
  374.      addToList()
  375.      lue:='MBordered'
  376.      addToList()
  377.      lue:='2x2'
  378.      addToList()
  379.      lue:='Color'
  380.      addToList()
  381.      lue:='HAM6'
  382.      addToList()
  383.      lue:='HAM8'
  384.      addToList()
  385.      lue:='Gray'
  386.      addToList()
  387.      lue:='Gray8'
  388.      addToList()
  389.      rodzajDit:=prr
  390.      inform()
  391.       REPEAT
  392.         messageClass:=wait4message(win)
  393.         SELECT messageClass
  394.           CASE IDCMP_GADGETUP
  395.             SELECT infos  /* pointer to gadget */             
  396.               CASE infoButton
  397.                inform()
  398.               CASE saveButton
  399.                IF req:=RtAllocRequestA(FILEREQ,0)
  400.                  IF beginWait(win, myreq)
  401.                    RtEZRequestA('Prg. MP needs(?!?!?!??) path < 31 chars.',
  402.                    'BI-LA KAIFA !!!!',0,0,0)
  403.                    RtChangeReqAttrA(req,[RTFI_DIR,dir])
  404.                     IF RtFileRequestA(req,NIL,'Pick a drawer TO save !!!'
  405.                       ,[RTFI_FLAGS,(FREQF_NOFILES OR FREQF_SAVE)])
  406.                       StrCopy(robot,req.dir)
  407.                       StrCopy(plik,robot)
  408.                       StringF(robot,'IFF24.%%%%')
  409.                       IF RtGetStringA(robot,100,'Enter a file pattern !!!',0,0)
  410.                     StrCopy(mainfile,req.dir,ALL)
  411.                     IF StrCmp(req.dir[StrLen(mainfile)-1],':')
  412.                      StrCopy(plik,mainfile)
  413.                     ELSEIF StrCmp(req.dir[StrLen(mainfile)-1],'/')
  414.                      StrCopy(plik,mainfile)
  415.                     ELSEIF StrLen(mainfile)<1
  416.                      StrCopy(plik,mainfile)
  417.                     ELSE
  418.                      StrCopy(plik,mainfile)
  419.                      StrAdd(plik,'/')
  420.                     ENDIF
  421.                          StrCopy(mainfile,plik,ALL)
  422.                          StringF(plik,'"\s\s"',mainfile,robot)
  423.                            IF StrLen(plik)>31
  424.                              RtEZRequestA('It must be under 31 chars !!!!.',
  425.                              'Doup !!! Sorry I''ll try again !!',0,0,0)
  426.                            ELSE
  427.                          StringF(robot,'\s -saveiff \s \s',mppath,plik,gattext)
  428.                          Execute(robot,NIL,0)
  429.                          robot[]:=0
  430.                       ENDIF
  431.                     ENDIF
  432.                  ENDIF
  433.                  endWait(win, myreq)
  434.                  RtFreeRequest(req)
  435.                 ENDIF
  436.                ENDIF
  437.         CASE playButton
  438.             IF (noap=1) AND (rodzajDit>20)
  439.                shit:=1
  440.             ENDIF
  441.              IF shit=0
  442.               IF mp_Task:=Open('ram:pracfile',NEWFILE)
  443.                IF FileLength(stringGadgetValue)<>0
  444. /* Button OFF
  445. */
  446.            Gt_SetGadgetAttrsA (loadButton, win, NIL,
  447.                       [GA_DISABLED,1,TAG_DONE])
  448.            Gt_SetGadgetAttrsA (playButton, win, NIL,
  449.                       [GA_DISABLED,1,TAG_DONE])
  450.            Gt_SetGadgetAttrsA (saveButton, win, NIL,
  451.                       [GA_DISABLED,1,TAG_DONE])
  452.            Gt_SetGadgetAttrsA (infoButton, win, NIL,
  453.                       [GA_DISABLED,1,TAG_DONE])
  454.  
  455.                 IF rodzajDit=0 THEN StrCopy(dither,' -dither gray8 ',ALL)
  456.                 IF rodzajDit=1 THEN StrCopy(dither,' -dither gray ',ALL)
  457.                 IF rodzajDit=2 THEN StrCopy(dither,' -dither ham8 ',ALL)
  458.                 IF rodzajDit=3 THEN StrCopy(dither,' -dither ham6 ',ALL)
  459.                 IF rodzajDit=4 THEN StrCopy(dither,' -dither color ',ALL)
  460.                 IF rodzajDit=5 THEN StrCopy(dither,' -dither 2x2 ',ALL)
  461.                 IF rodzajDit=6 THEN StrCopy(dither,' -dither mbordered ',ALL)
  462.                 IF rodzajDit=7 THEN StrCopy(dither,' -dither threshold ',ALL)
  463.                 IF rodzajDit=8 THEN StrCopy(dither,' -dither hybrid ',ALL)
  464.                 IF rodzajDit=9 THEN StrCopy(dither,' -dither hybrid2 ',ALL)
  465.                 IF rodzajDit=10 THEN StrCopy(dither,' -dither ordered ',ALL)
  466.                 IF rodzajDit=11 THEN StrCopy(dither,' -dither ordered2 ',ALL)
  467.                 IF rodzajDit=12 THEN StrCopy(dither,' -dither fs2 ',ALL)
  468.                 IF rodzajDit=13 THEN StrCopy(dither,' -dither fs2fast ',ALL)
  469.                 IF rodzajDit=14 THEN StrCopy(dither,' -dither fs4 ',ALL)
  470.                 IF rodzajDit=15 THEN StrCopy(dither,' -dither mono ',ALL)
  471.                 IF rodzajDit=16 THEN StrCopy(dither,' -dither retina24 ',ALL)
  472.                 IF rodzajDit=17 THEN StrCopy(dither,' -dither egs24 ',ALL)
  473.                 IF rodzajDit=18 THEN StrCopy(dither,' -dither village24 ',ALL)
  474.                 IF rodzajDit=19 THEN StrCopy(dither,' -dither opal24 ',ALL)
  475.                 IF rodzajDit=20 THEN StrCopy(dither,' -dither opal15 ',ALL)
  476.                 IF rodzajDit=21 THEN StrCopy(dither,' -dither color ',ALL)
  477.                 IF rodzajDit=22 THEN StrCopy(dither,' -dither ham6 ',ALL)
  478.                 IF rodzajDit=23 THEN StrCopy(dither,' -dither hiresham ',ALL)
  479.                 StringF(mainfile,'')
  480.                  IF rodzajDit>20
  481.                     StrAdd(mainfile,appath,ALL)
  482.                     player:=2
  483.                  ELSE
  484.                     StrAdd(mainfile,mppath,ALL)
  485.                     player:=1
  486.                  ENDIF
  487.                   IF ch3=0 THEN StrAdd(mainfile,' -nob',ALL)
  488.                   IF ch4=0 THEN StrAdd(mainfile,' -nob',ALL)
  489.                     StrAdd(mainfile,dither,ALL)
  490. /*                  IF beginWait(win, myreq)
  491. */
  492.                     count:=0
  493.                   IF ch2=0
  494.                         pentla:=1
  495.                         IF  RtGetLongA({pentla},'Write LOOP number:',0,0)
  496.                      ELSE
  497.                         pentla:=-1
  498.                      ENDIF
  499.                   ENDIF
  500.                IF pentla>0
  501.                  IF pentla=0 THEN pentla:=1
  502.                   IF ch1=0
  503.                     StringF(robot,'C:Copy \s TO Ram:\s',stringGadgetValue,'mpeg.tmp')
  504.                     Execute(robot,NIL,0)
  505.                     StrAdd(mainfile,'RAM:')
  506.                     StrAdd(mainfile,'mpeg.tmp')
  507.                       count:=1
  508.                       REPEAT
  509.                         Execute(mainfile,0,mp_Task)
  510.                         count:=count+1
  511.                       UNTIL count>=pentla
  512.                     pentla:=1
  513. /*                    StringF(mainfile,'C:Delete >NIL: RAM:\s','mpeg.tmp')*/
  514.                      DeleteFile('ram:mpeg.tmp')
  515. /*                   Execute(mainfile,0,mp_Task)*/
  516.                   ELSE
  517.                     StrAdd(mainfile,stringGadgetValue,ALL)
  518.                       REPEAT
  519.                         Execute(mainfile,0,mp_Task)
  520.                         count:=count+1
  521.                       UNTIL count=pentla
  522.                     pentla:=1
  523.                  ENDIF
  524.               ENDIF
  525.                    IF pentla=-1 THEN pentla:=1
  526. /*                    endWait(win, myreq)*/
  527. /* Button's OK
  528. */
  529.            Gt_SetGadgetAttrsA (loadButton, win, NIL,
  530.                       [GA_DISABLED,0,TAG_DONE])
  531.            Gt_SetGadgetAttrsA (playButton, win, NIL,
  532.                       [GA_DISABLED,0,TAG_DONE])
  533.            Gt_SetGadgetAttrsA (saveButton, win, NIL,
  534.                       [GA_DISABLED,0,TAG_DONE])
  535.            Gt_SetGadgetAttrsA (infoButton, win, NIL,
  536.                       [GA_DISABLED,0,TAG_DONE])
  537.  
  538.                ENDIF
  539.               ENDIF
  540.                  Close(mp_Task)
  541.                  IF (FileLength('RAM:pracfile')>10) AND (FileLength
  542.                      ('RAM:pracfile')<175)
  543.                     wpis()
  544.                  ELSE
  545.                  ENDIF
  546.                 ENDIF
  547. /* ENDIF*/
  548.                shit:=0
  549.               CASE loadButton
  550.                IF req:=RtAllocRequestA(FILEREQ,0)
  551.                 IF beginWait(win, myreq)
  552.                  /*buf[]:=0 */
  553.                  RtChangeReqAttrA(req,[RTFI_DIR,dir,RTFI_MATCHPAT,
  554.                  '#?.(MPEG|MP|MPG)'])
  555.                   IF RtFileRequestA(req,buf,'Pick an mpeg anim !!!'
  556.                    ,[RT_WAITPOINTER,(512),RTFI_FLAGS,(FREQF_PATGAD),
  557.                    RTFI_OKTEXT,('SURE')])
  558.                    StrCopy(plik,buf)
  559.                    StrCopy(dir,req.dir)
  560.                     IF StrCmp(req.dir[StrLen(dir)-1],':')
  561.                      StrCopy(gattext,dir)
  562.                      StrAdd(gattext,plik)
  563.                     ELSEIF StrCmp(req.dir[StrLen(dir)-1],'/')
  564.                      StrCopy(gattext,dir)
  565.                      StrAdd(gattext,plik)
  566.                     ELSEIF StrLen(dir)<1
  567.                      StrCopy(gattext,dir)
  568.                      StrAdd(gattext,plik)
  569.                     ELSE
  570.                      StrCopy(gattext,dir)
  571.                      StrAdd(gattext,'/')
  572.                      StrAdd(gattext,plik)
  573.                     ENDIF
  574.                    Gt_SetGadgetAttrsA (stringGadget, win, NIL,
  575.                    [GTST_STRING,gattext,TAG_DONE])
  576.                    StrCopy(dir,req.dir)
  577.                    RtFreeRequest(req)
  578.                   ENDIF
  579.                   endWait(win, myreq)
  580.                 ENDIF
  581.                ENDIF
  582.               CASE listView
  583.                 listItemPosition:=infos.gadgetid /* note the use of this field! */
  584.               CASE checkRAM
  585.                 ch1:=check+1
  586.               CASE checkLoop
  587.                 ch2:=check+1
  588.               CASE checkNOP
  589.                 ch3:=check+1
  590.               CASE checkNOB
  591.                 ch4:=check+1
  592.            ENDSELECT
  593.           CASE IDCMP_INTUITICKS
  594.             NOP/*  these are being sent FOR some shitty reason }:-( */
  595.         ENDSELECT
  596.       UNTIL messageClass=IDCMP_CLOSEWINDOW
  597.       closeWindow()
  598.     ENDIF
  599.   ENDIF
  600.   CloseLibrary(reqtoolsbase)
  601.  ELSE
  602.   Raise(NO_REQTOOLS)
  603.  ENDIF
  604.   closeScreen()
  605.   CleanUp(0)
  606. EXCEPT
  607.   SELECT exception
  608.       IF reqtoolsbase THEN CloseLibrary(reqtoolsbase)
  609.       CASE NO_MP
  610.                          EasyRequestArgs(NIL,
  611.                         [SIZEOF easystruct, 0, 'MPEGInt. Request Window',
  612.                         '   I can''t find MP program   \n   check path in icon prefs',
  613.                         'OK :(']:easystruct,
  614.                         NIL,NIL)
  615.       CASE NO_ICONLIB
  616.                         EasyRequestArgs(NIL,
  617.                         [SIZEOF easystruct, 0, 'MPEGInt. Request Window',
  618.                         '   Sorry no icon.library\nin your''s LIBS: dir',
  619.                         'OK I''ll copy it']:easystruct,
  620.                         NIL,NIL)
  621.       CASE NO_ICON
  622.                         EasyRequestArgs(NIL,
  623.                         [SIZEOF easystruct, 0, 'MPEGInt. Request Window',
  624.                         'Sorry, you need TO run\n this program from WB',
  625.                         'OK (I understand)']:easystruct,
  626.                         NIL,NIL)
  627.       CASE NO_REQTOOLS
  628.                         EasyRequestArgs(NIL,
  629.                         [SIZEOF easystruct, 0, 'MPEGInt. Request Window',
  630.                         ' Sorry no ReqTools.library\n   in your''s LIBS: dir',
  631.                         'OK I''ll copy it']:easystruct,
  632.                         NIL,NIL)
  633.       DEFAULT
  634.       WriteF('Well there is some error ( >:-< ) blââââdddd np.\n')
  635.       WriteF('Excident nr: "\s"\n', [exception, 0])
  636.       closeWindow()
  637.       closeScreen()
  638.       CleanUp(0)
  639.   ENDSELECT
  640. ENDPROC
  641.  
  642. PROC beginWait(win, waitRequest)
  643.  InitRequester(waitRequest)
  644.  IF Request(waitRequest, win)
  645.   SetPointer(win,chippointer, 16, 16, -6, 0)
  646.   RETURN TRUE
  647.  ELSE
  648.   RETURN FALSE
  649.  ENDIF
  650. ENDPROC
  651.  
  652. PROC endWait(win, waitRequest)
  653.  ClearPointer(win)
  654.  EndRequest(waitRequest, win)
  655. ENDPROC
  656.  
  657. PROC name()
  658.   SetWindowTitles(win,'Sauron MPEG Intuition V2.12c', Not(0))
  659. ENDPROC
  660.  
  661. PROC inform()
  662.  
  663. DEF w=NIL:PTR TO window
  664. IF beginWait(win, myreq)
  665.  IF w:=OpenWindowTagList(NIL,[WA_FLAGS,$E,WA_IDCMP,$268,
  666.                   WA_TOP,win.topedge+40,WA_LEFT,win.leftedge+8,
  667.                   WA_WIDTH,300,WA_HEIGHT,140,WA_TITLE,'About MPEG intuition V2.12c',0])
  668.                   SetStdRast(w.rport)
  669.                   Colour(2,0)
  670.                   TextF(70,30,'Sauron MPEG Intuition')
  671.                   TextF(50,45,'by Sauron (c) 1995 v2.12c')
  672.                   Colour(1,0)
  673.                   TextF(55,65,'Bugs & Develope send TO:')
  674.                   TextF(45,75,'Adrian (SAURON) Siemieniak')
  675.                   TextF(45,85,'sauron@sco.zsi.pwr.wroc.pl')
  676.                   TextF(35,95,'sauron@sun1000.ci.pwr.wroc.pl')
  677.                   TextF(75,105,'tel.(071) 24-10-20')
  678.                   TextF(15,125,'---------------------------------')
  679.                   WHILE (class:=WaitIMessage(w))<>IDCMP_CLOSEWINDOW
  680.                   ENDWHILE
  681.                    CloseWindow(w)
  682.                   name()
  683.  ENDIF
  684. endWait(win, myreq)
  685. ENDIF
  686. ENDPROC
  687.  
  688. PROC wpis()
  689.   DEF inputstring[80]:STRING,work[20]:STRING,work2[14]:STRING,mp_Task,x,y,a,b
  690.   IF mp_Task:=Open('ram:pracfile',OLDFILE)
  691.       ReadStr(mp_Task,inputstring)
  692.       StrCopy(work2,'')
  693.    IF player=1
  694.       ReadStr(mp_Task,inputstring)
  695.       MidStr(work,inputstring,41,StrLen(inputstring)-46)
  696.       FOR a:=0 TO 12-StrLen(work) DO StrAdd(work2,' ')
  697.       x:= RealVal(work)
  698.       StrAdd(work2,work)
  699.       Gt_SetGadgetAttrsA (textTime, win, NIL,
  700.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  701.  
  702.       ReadStr(mp_Task,inputstring)
  703.       a:= InStr(inputstring,' x',10)
  704.       MidStr(work,inputstring,11,a-11)
  705.       Gt_SetGadgetAttrsA (textX, win, NIL,
  706.                   [GTTX_TEXT,work,GTTX_BORDER,1,NIL])
  707.       a:= InStr(inputstring,'x ',10)
  708.       b:= InStr(inputstring,' Pi',10)
  709.       b:= b-2-a
  710.       IF b=2
  711.           a:=a-1
  712.           b:=3
  713.       ENDIF
  714.       MidStr(work,inputstring,a+2,b)
  715.       Gt_SetGadgetAttrsA (textY, win, NIL,
  716.                   [GTTX_TEXT,work,GTTX_BORDER,1,NIL])
  717.  
  718.       ReadStr(mp_Task,inputstring)
  719.       StrCopy(work2,'')
  720.       MidStr(work,inputstring,17,StrLen(inputstring)-6)
  721.       FOR a:=0 TO 8-StrLen(work) DO StrAdd(work2,' ')
  722.       y:= RealVal(work)
  723.       StrAdd(work2,work)
  724.       Gt_SetGadgetAttrsA (textFrames, win, NIL,
  725.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  726.  
  727.       ReadStr(mp_Task,inputstring)
  728.       UpperStr(inputstring)
  729.       StrCopy(work2,'')
  730.       a:= InStr(inputstring,' BYTES',13)
  731.       MidStr(work,inputstring,16,a-16)
  732.       FOR a:=1 TO 9- StrLen(work) DO StrAdd(work2,' ')
  733.       StrAdd(work2,work)
  734.       Gt_SetGadgetAttrsA (textSize, win, NIL,
  735.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  736.       a:= InStr(inputstring,'TE ',42)
  737.       MidStr(work,inputstring,a+2,7)
  738.       Gt_SetGadgetAttrsA (textComp, win, NIL,
  739.                   [GTTX_TEXT,work,GTTX_BORDER,1,NIL])
  740.     ELSE
  741.       ReadStr(mp_Task,inputstring)
  742.       MidStr(work,inputstring,41,StrLen(inputstring)-46)
  743.       FOR a:=0 TO 12-StrLen(work) DO StrAdd(work2,' ')
  744.       x:= RealVal(work)
  745.       StrAdd(work2,work)
  746.       Gt_SetGadgetAttrsA (textTime, win, NIL,
  747.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  748.  
  749.       ReadStr(mp_Task,inputstring)
  750.       StrCopy(work2,'')
  751.       MidStr(work,inputstring,17,StrLen(inputstring)-6)
  752.       FOR a:=0 TO 8-StrLen(work) DO StrAdd(work2,' ')
  753.       y:= RealVal(work)
  754.       StrAdd(work2,work)
  755.       Gt_SetGadgetAttrsA (textFrames, win, NIL,
  756.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  757.  
  758.       ReadStr(mp_Task,inputstring)
  759.       a:= InStr(inputstring,'*',10)
  760.       MidStr(work,inputstring,12,a-12)
  761.       Gt_SetGadgetAttrsA (textX, win, NIL,
  762.                   [GTTX_TEXT,work,GTTX_BORDER,1,NIL])
  763.       a:= InStr(inputstring,'*',10)
  764.       b:= InStr(inputstring,' pi',10)
  765.       b:= b-2-a
  766.       IF b=1
  767.           b:=2
  768.           MidStr(work2,inputstring,a+1,b)
  769.           StringF(work,' \s',work2)
  770.       ELSEIF
  771.           MidStr(work,inputstring,a+1,b+2)
  772.       ENDIF
  773.       Gt_SetGadgetAttrsA (textY, win, NIL,
  774.                   [GTTX_TEXT,work,GTTX_BORDER,1,NIL])
  775.  
  776.       StrCopy(work2,'')
  777.       b:= !x*y
  778.       a:= FileLength(gattext)/(!b!)
  779.       StringF(work,'\d.2',a)
  780.       FOR a:=0 TO 8-StrLen(work) DO StrAdd(work2,' ')
  781.       StrAdd(work2,work)
  782.       Gt_SetGadgetAttrsA (textSize, win, NIL,
  783.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  784.  
  785.    ENDIF
  786.  
  787. /* File length procedure*/
  788.       StrCopy(work2,'')
  789.       StringF(work,'\d',FileLength(gattext))
  790.       a:= Val(work)
  791.       b:=Div(a,1024)
  792.       StringF(work,'\d',b)
  793.       FOR a:=0 TO 3-StrLen(work) DO StrAdd(work2,' ')
  794.       StrAdd(work2,work)
  795.       Gt_SetGadgetAttrsA (textKB,win ,NIL,
  796.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  797.  
  798. /* Frames counter procedure */
  799.       b:=!x*y
  800.       StringF(work,'\d',!b!)
  801.       StrCopy(work2,'')
  802.       FOR a:=0 TO 3-StrLen(work) DO StrAdd(work2,' ')
  803.       StrAdd(work2,work)
  804.       Gt_SetGadgetAttrsA (textKlata,win ,NIL,
  805.                   [GTTX_TEXT,work2,GTTX_BORDER,1,NIL])
  806.     Close(mp_Task)
  807.   ENDIF
  808. ENDPROC
  809.  
  810.  
  811. PROC ikona()
  812.         DEF wb:PTR TO wbstartup,wba:PTR TO wbarg,dobj:PTR TO diskobject,toolarray,
  813.         str,olddir=0,pri=0,read=0
  814.         IF (iconbase:=OpenLibrary('icon.library',37))
  815.         ELSE
  816.             Raise(NO_ICONLIB)
  817.         ENDIF
  818.    IF wbmessage
  819.                 wb:=wbmessage ; wba:=wb.arglist
  820.                 IF (wba.lock>0) AND (wba.name>0)
  821.                         olddir:=CurrentDir(wba.lock)
  822.                 ENDIF
  823.                  IF (dobj:=GetDiskObject(wba.name))>0
  824.                     toolarray:=dobj.tooltypes
  825.                        IF (str:=FindToolType(toolarray,'MP_PATH'))>0
  826.                          StrCopy(mppath,str,ALL)
  827.                        ENDIF
  828.                        IF (str:=FindToolType(toolarray,'AP_PATH'))>0
  829.                          StrCopy(appath,str,ALL)
  830.                          IF FileLength(appath)<=0
  831.                              noap:=1
  832.                          EasyRequestArgs(NIL,
  833.                         [SIZEOF easystruct, 0, 'MPEGInt. Request Window',
  834.                         '   I can''t find Amipeg program   \n     check path in icon prefs',
  835.                         'OK :(']:easystruct,
  836.                         NIL,NIL)
  837.                          ENDIF
  838.                        ENDIF
  839.                        IF (str:=FindToolType(toolarray,'MP_PRIO'))>0
  840.                          pri:=Val(str,read)
  841.                           IF read=0
  842.                            prio:=pri
  843.                           ENDIF
  844.                        ENDIF
  845.                        IF (str:=FindToolType(toolarray,'MP_ANIMPATH'))>0
  846.                          StrCopy(dir,str,ALL)
  847.                        ENDIF
  848.                        IF (str:=FindToolType(toolarray,'MP_ANIMNAME'))>0
  849.                         IF StrCmp(req.dir[StrLen(dir)-1],':')
  850.                          StrCopy(gattext,dir)
  851.                          StrAdd(gattext,str)
  852.                         ELSEIF StrCmp(req.dir[StrLen(dir)-1],'/')
  853.                          StrCopy(gattext,dir)
  854.                          StrAdd(gattext,str)
  855.                         ELSEIF StrLen(dir)<1
  856.                          StrCopy(gattext,dir)
  857.                          StrAdd(gattext,str)
  858.                         ELSE
  859.                          StrCopy(gattext,dir)
  860.                          StrAdd(gattext,'/')
  861.                          StrAdd(gattext,str)
  862.                         ENDIF
  863.                        ENDIF
  864.                        IF (str:=FindToolType(toolarray,'MP_DITHER'))>0
  865.                          IF StrCmp(UpperStr(str),'GRAY8')
  866.                              prr:=0
  867.                          ELSEIF StrCmp(UpperStr(str),'GRAY')
  868.                              prr:=1
  869.                          ELSEIF StrCmp(UpperStr(str),'HAM8')
  870.                              prr:=2
  871.                          ELSEIF StrCmp(UpperStr(str),'HAM6')
  872.                              prr:=3
  873.                          ELSEIF StrCmp(UpperStr(str),'COLOR')
  874.                              prr:=4
  875.                          ELSEIF StrCmp(UpperStr(str),'2X2')
  876.                              prr:=5
  877.                          ELSEIF StrCmp(UpperStr(str),'MBORDERED')
  878.                              prr:=6
  879.                          ELSEIF StrCmp(UpperStr(str),'TRESHOLD')
  880.                              prr:=7
  881.                          ELSEIF StrCmp(UpperStr(str),'HYBRID')
  882.                              prr:=8
  883.                          ELSEIF StrCmp(UpperStr(str),'HYBRID2')
  884.                              prr:=9
  885.                          ELSEIF StrCmp(UpperStr(str),'ORDERED')
  886.                              prr:=10
  887.                          ELSEIF StrCmp(UpperStr(str),'ORDERED2')
  888.                              prr:=11
  889.                          ELSEIF StrCmp(UpperStr(str),'FS2')
  890.                              prr:=12
  891.                          ELSEIF StrCmp(UpperStr(str),'FS2FAST')
  892.                              prr:=13
  893.                          ELSEIF StrCmp(UpperStr(str),'FS4')
  894.                              prr:=14
  895.                          ELSEIF StrCmp(UpperStr(str),'MONO')
  896.                              prr:=15
  897.                          ELSEIF StrCmp(UpperStr(str),'RETINA24')
  898.                              prr:=16
  899.                          ELSEIF StrCmp(UpperStr(str),'EGS24')
  900.                              prr:=17
  901.                          ELSEIF StrCmp(UpperStr(str),'VILLAGE24')
  902.                              prr:=18
  903.                          ELSEIF StrCmp(UpperStr(str),'OPAL24')
  904.                              prr:=19
  905.                          ELSEIF StrCmp(UpperStr(str),'OPAL15')
  906.                              prr:=20
  907.                          ELSEIF StrCmp(UpperStr(str),'AMP-COLOR')
  908.                              prr:=21
  909.                          ELSEIF StrCmp(UpperStr(str),'AMP-HAM6')
  910.                              prr:=22
  911.                          ELSEIF StrCmp(UpperStr(str),'AMP-HIRESHAM')
  912.                              prr:=23
  913.                          ELSE
  914.                              EasyRequestArgs(NIL,
  915.                             [SIZEOF easystruct, 0, 'Request Window Name',
  916.                             '   Unknow dither type\nspecified in icon tooltype',
  917.                             'OK I''ll use DEFAULT (gray8)']:easystruct,
  918.                             NIL,NIL)
  919.                          ENDIF
  920.                        ENDIF
  921.                        IF (str:=FindToolType(toolarray,'X_WIN'))>0
  922.                          pri:=Val(str,read)
  923.                           IF read=0
  924.                            x:=pri
  925.                           ENDIF
  926.                        ENDIF
  927.                        IF (str:=FindToolType(toolarray,'Y_WIN'))>0
  928.                          pri:=Val(str,read)
  929.                           IF read=0
  930.                            y:=pri
  931.                           ENDIF
  932.                        ENDIF
  933.                        IF (str:=FindToolType(toolarray,'MP_RAM'))>0
  934.                          IF StrCmp(UpperStr(str),'YES') THEN ch1:=0
  935.                        ENDIF
  936.                        IF (str:=FindToolType(toolarray,'MP_NOP'))>0
  937.                          IF StrCmp(UpperStr(str),'YES') THEN ch4:=0
  938.                        ENDIF
  939.                        IF (str:=FindToolType(toolarray,'MP_NOB'))>0
  940.                          IF StrCmp(UpperStr(str),'YES') THEN ch3:=0
  941.                        ENDIF
  942.                        IF (str:=FindToolType(toolarray,'MP_LOOP'))>0
  943.                          IF StrCmp(UpperStr(str),'YES') THEN ch2:=0
  944.                        ENDIF
  945.               CloseLibrary(iconbase)
  946.           ENDIF
  947.    ELSE
  948.        Raise(NO_ICON)
  949.    ENDIF
  950. ENDPROC
  951.